package com.woniuxy.yoga.product.service.service;

import com.woniuxy.yoga.commons.core.model.PageInfo;
import com.woniuxy.yoga.product.dao.model.TeamProduct;
import com.baomidou.mybatisplus.extension.service.IService;
import com.woniuxy.yoga.product.model.dto.AllTeamProductDTO;
import com.woniuxy.yoga.product.model.dto.TeamProductDTO;
import com.woniuxy.yoga.product.model.param.AddTeamProductParam;
import com.woniuxy.yoga.product.model.param.QueryTeamProductParam;

import java.util.List;

/**
 * <p>
 * 团课产品表 服务类
 * </p>
 *
 * @author 韦用文,刘存益,郎腾霄
 * @since 2023年11月28日
 */
public interface TeamProductService extends IService<TeamProduct> {

    /**
     * 用户查询团课产品
     * @param storeId
     * @return
     */
    List<TeamProductDTO> queryNormalTeam();

    /**
     * 教练ID查询团队产品
     * @param ids
     * @return
     */
    List<AllTeamProductDTO> getByCoachId(List<Integer> ids);

    /**
     * 新增团队产品
     * @param param
     */
    void addTeamProduct(AddTeamProductParam param) throws Exception;

    /**
     * 团队产品取消
     * @param teamProductId
     */
    void cancelTeamProduct(Integer teamProductId);

    /**
     * 团队产品完成
     * @param teamProductId
     */
    void completeTeamProduct(Integer teamProductId);

    /**
     * 查询所有团队产品
     * @param param
     * @return
     */
    PageInfo queryTeamProduct(QueryTeamProductParam param);

    /**
     * 修改预约人数
     * @param teamProductId
     */
    void modifyBookNum(Integer teamProductId) throws Exception;

    /**
     * 团队产品总天数减一
     * @param teamProductId
     */
    Integer hourCountMinusOne(Integer teamProductId);
}
